class Student {
	public void eat(Food food) {
		System.out.println("I like " + food.getMeal());
	}
	
	public void eat(Cauliflower Cauliflower) {
		System.out.println("I don’t like " + Cauliflower.getMeal());
	}
}

public class Aufgabe3 {

	public static void main(String[] args) {
		Student student=new Student();
		
		Cauliflower essen1 = new Cauliflower();
		student.eat(essen1); //Ausgabe: I don’t like Blumenkohl an Gorgonzolasoße
		//Die spezifischste statisch bekannte Signatur ist hier eat(Cauliflower Cauliflower)
		
		Spaghetti essen2 = new Spaghetti();
		student.eat(essen2); //Ausgabe: I like Spaghetti Bologneser Art
		//Da Food ersetzbar ist durch Spaghetti kann hier eat(Food food) benutzt werden (erweiterte Signatur)
		
		Food essen = new Cauliflower();
		student.eat(essen); //Ausgabe: I like Blumenkohl an Gorgonzolasoße
		//Die spezifischste statisch bekannte Signatur ist hier eat(Food food) (dynamisch gebunden)
	}

}
